/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package basiclanguage;

/**
 *
 * @author anh_yeu_em_nhieu_lam
 */
public class ThamChieuAndThamTri {
    /*
     * Java là một ngôn ngữ luôn luôn pass by value
     * */
    public static void MyTest(int itest,MyClassTwo classtwo){
        System.out.print("---------Gia tri trong ham-------------\n");
        itest++;
        classtwo.myint++;
        System.out.print(itest+"\n");
        System.out.print(classtwo.myint+"\n");
    }
    public class MyClassTwo{
        public int myint = 0;
    }
    
    
    public static void main(String[] args){
        int itest = 0;
        MyClassTwo myclasstwo = new ThamChieuAndThamTri().new MyClassTwo();
        System.out.print("----------Gia tri ban dau----------\n");
        System.out.print(itest+"\n");
        System.out.print(myclasstwo.myint+"\n");
        ThamChieuAndThamTri.MyTest(itest, myclasstwo);
        System.out.print("----------Gia tri sau khi thuc hien ham----------\n");
        System.out.print(itest+"\n");
        System.out.print(myclasstwo.myint+"\n");
        /*
         * Giải thích lý do tại sao giá trị myint của đối tượng myclasstwo lại
         * bị thay đổi. Nguyên nhân là mỗi khi truyền đối số vào hàm , java sẽ
         * tự động copy phần tham chiếu(reference)(ở đây là copy myclasstwo chứ
         * không phải copy phần new ThamChieuAndThamTri().new MyClassTwo() trong
         * biểu thức :
         * 
         * MyClassTwo myclasstwo = new ThamChieuAndThamTri().new MyClassTwo();
         * 
         * Lúc này phần copy và phần reference cùng trỏ đến 1 đối tượng
         * Phần tham chiếu copy này sẽ được chuyền vào hàm này và do trỏ đến đối
         * tượng new ThamChieuAndThamTri().new MyClassTwo() lên khi ta truy nhập 
         * properties của đối tượng copy sẽ truy nhập thẳng đến đối tượng được 
         * tạo và thay đổi nó. Chính vì nguyên nhân này khiến đối tượng bị thay đổi.
         * */
    }
}
/*
----------Gia tri ban dau----------
0
0
---------Gia tri trong ham-------------
1
1
----------Gia tri sau khi thuc hien ham----------
0
1
 * */